// request.js

import Cookies from 'js-cookie';
// 创建一个请求实例
const request = (options) => {
	// 默认设置
	const accessToken = uni.getStorageSync("accessToken") ; // 获取访问 token
	const refreshToken = uni.getStorageSync("refreshToken") ; // 获取刷新 token
	const cookieValue = `xr_access_token=${accessToken}; ${refreshToken}`;
	const defaultOptions = {
		method: 'GET',
		header: {
			'Content-Type': 'application/json',
			'Authorization': `Bearer ${accessToken}`,
			'Cookie': cookieValue,
		},	
	};
	console.log('成功获取到token',accessToken)

	// 合并用户选项和默认选项
	options = {
		...defaultOptions,
		...options,
		sslVerify: false,
		timeout: 10000
	};
	return new Promise((resolve, reject) => {
		uni.request({
			...options,
			success: (response) => {
				const {
					data,
					statusCode
				} = response;
				if (statusCode >= 200 && statusCode < 300) {
					// 请求成功
					resolve(data);
				} else {
					// 处理非 2xx 的状态码
					handleError(statusCode, data);
					reject(data);
				}
			},
			fail: (error) => {
				// 请求失败
				handleError(null, error);
				reject(error);
			}
		});
	});
};

// 错误处理函数
const handleError = (statusCode, error) => {
	if (statusCode) {
		// 处理具体的 HTTP 状态码
		switch (statusCode) {
			case 400:
				uni.showToast({
					title: '请求错误',
					icon: 'none'
				});
				break;
			case 401:
				uni.showToast({
					title: '未授权，请登录',
					icon: 'none'
				});
				break;
			case 403:
				uni.showToast({
					title: '禁止访问',
					icon: 'none'
				});
				break;
			case 404:
				uni.showToast({
					title: '未找到请求的资源',
					icon: 'none'
				});
				break;
			case 500:
				uni.showToast({
					title: '服务器内部错误',
					icon: 'none'
				});
				break;
			default:
				uni.showToast({
					title: '发生了一个错误',
					icon: 'none'
				});
		}
	} else {
		uni.showToast({
			title: '网络请求失败',
			icon: 'none',
			duration: 3000 // 设置展示时间为3秒
		});
	}
};

// 导出请求函数
export default request;